Oracle iOS Integration
Integrate your project with Oracle Responsys SDK
Add PushIOManager.framework
in Linked frameworks & pushio_config_debug.json
in your project as below:
Integrate your project with Rezolve Point SDK
To integrate PointSDK, please refer to the integration steps documented here
Interaction between the Responsys SDK and Rezolve Point SDK
Setup Rezolve Location Services
1. Import required header files.
import BDPointSDK
import PushIOManager
2. Implement Bluedot BDPGeoTriggeringEventDelegate
:
YourClass: BDPGeoTriggeringEventDelegate {
func didEnterZone(_ enterEvent: GeoTriggerEvent)
{
// Your logic when the device enters a Rezolve Zone
}
func didExitZone(_ exitEvent: GeoTriggerEvent)
{
// Your logic when the device leaves a Rezolve Zone
}
}
3. Assign GeoTriggeringEvent delegate with your implementation
let instanceOfYourClass = YourClass()
BDLocationManager.instance()?.geoTriggeringEventDelegate = instanceOfYourClass
4. Authenticate with the Rezolve services
BDLocationManager.instance()?.initialize(withProjectId: projectId) { error in
guard error == nil else {
print("There was an error initializing the Rezolve Point SDK: \(error.localizedDescription)")
return
}
}
5. Start Oracle Responsys within the application:didFinishLaunchingWithOptions
method. For a detailed setup guide, please refer to Oracle Responsys Documentation here
// Configure the SDK
var configName = "YOUR_PRODUCTION_CONFIG_FILE_NAME.json"
#if DEBUG
configName = "YOUR_DEBUG_CONFIG_FILE_NAME.json"
#endif
PushIOManager.sharedInstance().configure(withFileName: configName, completionHandler: { (configError, response) in
if let error = configError {
print("Not able to configure the sdk \(error.localizedDescription)")
return
}
})
6. Send event to Oracle Reponsys via Rezolve didEnterZone / didExitZone callbacks.
func didEnterZone(_ enterEvent: GeoTriggerEvent) {
let geoRegion = PIOGeoRegion(
geofenceId: entryEvent.fenceId.uuidString,
geofenceName: entryEvent.fenceName,
speed: enterEvent.entryEvent?.locations[0].speed ?? 0.0,
bearing: enterEvent.entryEvent?.locations[0].course ?? 0.0,
source: "Rezolve Point SDK",
zoneId: enterEvent.zoneInfo.id.uuidString,
zoneName: enterEvent.zoneInfo.name,
dwellTime: 0,
extra: enterEvent.zoneInfo.customData)
PushIOManager.sharedInstance().didEnter(region: geoRegion) { error, _ in
if error == nil {
print("Geofence Entry Event triggered successfully")
} else {
print("Unable to send Geofence Entry Event, reason: \(String(describing: error?.localizedDescription))")
}
}
}
func didExitZone(_ exitEvent: GeoTriggerEvent) {
let geoRegion = PIOGeoRegion(
geofenceId: exitEvent.fence.id,
geofenceName: exitEvent.fence.name,
speed: 0.0,
bearing: 0.0,
source: "Rezolve Point SDK",
zoneId: exitEvent.zoneInfo.id.uuidString,
zoneName: exitEvent.zoneInfo.name,
dwellTime: Int(exitEvent.exitEvent?.dwellTime ?? 0),
extra: exitEvent.zoneInfo.customData)
PushIOManager.sharedInstance().didExit(region: geoRegion) { error, _ in
if error == nil {
print("Geofence Exit Event triggered successfully")
} else {
print("Unable to send Geofence Exit Event, reason: \(String(describing: error?.localizedDescription))")
}
}
}
GitHub Sample Project
A sample project which demonstrates the integration of Responsys SDK and Rezolve Point SDK is available on GitHub.